package core.statistics;

import java.util.HashMap;
import java.util.List;

import core.AgentInfo;

/**
 * @authors Diego Freitas, Paulo Ricador, Tiago Oliveira.
 * 
 *         classe para fazer estat�sticas dos jogadores participantes de uma
 *         mesa.
 */
public class Statistics {

	private int rounds;
	private HashMap<String, Integer> winningRounds;
	private HashMap<String, Integer> currentPoints;
	private HashMap<String, Double> thinkingTime;

	public Statistics() {
		this.rounds = 0;
		this.winningRounds = new HashMap<String, Integer>();
		this.currentPoints = new HashMap<String, Integer>();
		this.thinkingTime = new HashMap<String, Double>();
	}

	/**
	 * @param rounds
	 *            numero total de rounds disputados(se for passado no final da
	 *            execucao) ou a serem disputados (se for passado no inicio da
	 *            execucao).
	 */
	public void setRounds(String rounds) {
		this.rounds = Integer.getInteger(rounds);
	}

	/**
	 * @param playerName
	 *            o nome do jogador.
	 * @param value
	 *            o numero de rounds vencidos por este jogador.
	 */
	public void setPlayerWinningRounds(String playerName, Integer value) {
		this.winningRounds.put(playerName, value);
	}

	/**
	 * @param playerName
	 *            o nome do jogador.
	 * @param value
	 *            a quantidade de pontos total do jogador.
	 */
	public void setPlayerCurrentPoints(String playerName, Integer value) {
		this.currentPoints.put(playerName, value);
	}

	/**
	 * @param playerName
	 *            o nome do jogador.
	 * @param value
	 *            o tempo total que o jogador gastou em suas jogadas.
	 */
	public void setPlayerThinkingTime(String playerName, Double value) {
		this.thinkingTime.put(playerName, value);
	}

	/**
	 * @param players
	 *            uma lista contendo o nome de todos os jogadores participantes
	 *            da mesa.
	 */
	public void setPlayersNames(List players) {
		for (Object object : players) {
			winningRounds.put(players.toString(), 0);
			currentPoints.put(players.toString(), 0);
			thinkingTime.put(players.toString(), 0.0);
		}
	}

	/**
	 * deve-se receber uma mensagem do ServerAgent contendo dados para atualizar
	 * valores.
	 */
	// TODO: resolver como esta mensagem ser� trocada...
	public void receiveMessage() {

	}

	public static void Extract(List<AgentInfo> agents) {
		// TODO Auto-generated method stub
		
	}

}
